package com.lianda.async.callback;

import com.lianda.async.wrapper.WorkerWrapper;

import java.util.Map;

/**
 * 执行任务需要实现接口
 */
@FunctionalInterface
public interface IWorker<T, V> {

    /**
     * 做消耗时间的动作，如rpc、IO请求等
     * @param object
     * @param allWrappers
     * @return
     */
    V action(T object, Map<String, WorkerWrapper> allWrappers);

    /**
     * 超时、异常时，默认的返回值
     * @return
     */
    default V defaultValue() { return null; }
}
